/*
 * @Author: hx 2542123711@QQ.com
 * @Date: 2024-11-20 19:14:53
 * @LastEditors: hx 2542123711@QQ.com
 * @LastEditTime: 2024-11-20 21:59:30
 * @FilePath: /class_process-communication/NamePipe/comm.hpp
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#pragma once

#include <sys/types.h>
#include <sys/stat.h>
#include <cstring>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <string>
#include <cerrno>
#include "log.hpp"

using namespace std;

#define FIFO_FILE "./myfifo"
#define MODE 0664 // 0664表示八进制文件
#define MAX 1024

enum
{
    FILE_MAKE_ERROR = 1,
    FILE_OPEN_ERROR,
    FILE_DELETE_ERROR
};

//完成管道文件的创建和删除，注意命名管道文件是内存级文件
class Init
{
public:
    //1.创建命名管道
    Init()
    {
        int n = mkfifo(FIFO_FILE, MODE);
        if (n == -1)
        {
            perror("mkfifo");
            exit(FILE_MAKE_ERROR);
        }
    }

    //5.删除命名管道文件 
    ~Init()
    {
        int k = unlink(FIFO_FILE);
        if (k == -1)
        {
            perror("unlink");
            exit(FILE_DELETE_ERROR);
        }
    }
};